package com.voilet.interview.rx.operator.condition;

import android.util.Log;

import com.voilet.interview.rx.operator.absOperator;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.functions.Consumer;

/**
 * Created by kan212 on 2019/4/10.
 */

public class amb implements absOperator {
    @Override
    public void test() {
        // 设置2个需要发送的Observable & 放入到集合中
        List<ObservableSource<Integer>> list= new ArrayList<>();
        // 第1个Observable延迟1秒发射数据
        list.add( Observable.just(1,2,3).delay(1, TimeUnit.SECONDS));
        // 第2个Observable正常发送数据
        list.add( Observable.just(4,5,6));

        // 一共需要发送2个Observable的数据
        // 但由于使用了amba（）,所以仅发送先发送数据的Observable
        // 即第二个（因为第1个延时了）
        Observable.amb(list).subscribe(new Consumer<Integer>() {
            @Override
            public void accept(Integer integer) throws Exception {
                Log.e(TAG, "接收到了事件 "+integer);
            }
        });
        //结果 4，5，6
    }

    @Override
    public void test2() {

    }
}
